package com.itheima.d7_reflect_framework;

import com.itheima.d7_reflect_framework.bean.Student;
import com.itheima.d7_reflect_framework.bean.Teacher;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.lang.reflect.Field;

/**
 * 目标：提供一个通用框架，支持保存所有对象的具体信息。
 */
public class ReflectDemo {
    public static void main(String[] args) {
        Student s = new Student();
        s.setName("猪八戒");
        s.setClassName("西天跑路1班");
        s.setAge(1000);
        s.setHobby("吃，睡");
        s.setSex('男');

        Teacher t = new Teacher();
        t.setName("波仔");
        t.setSex('男');
        t.setSalary(6000);

        //需求：定义一个通用框架，支持保存任意类型对象的具体信息
        saveObj(t);

    }

    public static void saveObj(Object obj) {
        //判断是否为空
        //1.字段解析
        //1.1获取字节码对象

        //2.2获取全部的字段
        //2.通过io流写到文件夹中
        Class<?> cls = obj.getClass();
        Field[] df = cls.getDeclaredFields();

        try (FileOutputStream fos = new FileOutputStream("day14junit-reflect-annotation-proxy-app/src/obj.txt",true);
             PrintStream ps = new PrintStream(fos)
        ) {
            ps.println("=========="+cls.getSimpleName()+"=========");
            for (Field field : df) {
                field.setAccessible(true);
                String name = field.getName();
                Object value = field.get(obj);
                ps.println(name+"="+value);
            }

        } catch (IOException | IllegalAccessException e) {
            e.printStackTrace();
        }
        //类型
        //obj.getname
        //遍历字段，将字段写到文件夹中

    }
}
